
# /////////////////////////////////////////////////////////////////////////////////////
# Sintaxe do artigo “Seria a tolerância a marca distintiva do cidadão democrático? 
# Tolerância política no Brasil pós-eleições de 2022”, publicado na Revista Dados 
# /////////////////////////////////////////////////////////////////////////////////////
# 
# Mario Fuks, Ednaldo Ribeiro e Gabriel Avila Casalecchi
# 
# Data: 03/07/2024
# 
# O artigo utiliza o banco: Clivagens políticas no Brasil, 2023 (Clivagens.RData)
#
# Todas as análises foram realizadas utilizados o software R e R Studio, versão 4.4. 
#
# Em primeiro lugar, é necessário carregar o banco "Clivagens.RData"
# O comando no R é: load("DIRETÓRIO DE ONDE ESTÁ O BANCO")

load("Clivagens.RData")

# Para rodar os dados da pesquisa é preciso instalar os pacotes: 
#
# install.packages("labelled")
# install.packages("memisc")
# install.packages("haven")
# install.packages("ggplot2")
# install.packages("scales")
# install.packages("sjPlot")
# install.packages("nnet")
# 
# Depois, é preciso habilitálos para uso:
library(tidyverse)
library(labelled)
library(memisc)
library(haven)
library(ggplot2)
library(scales)
library(sjPlot)
library(nnet)

# Para começar criamos o objeto do banco
Clivagens <- df2023

# /////////////////////////////////////////////////////////////////////////////////////////////
# CONSTRUÇÃO DAS VARIÁVEIS DO BANCO ///////////////////////////////////////////////////////////
# /////////////////////////////////////////////////////////////////////////////////////////////

# TIPOLOGIA DA TOLERÂNCIA /////////////////////////////////////////////////////////////////////

# Preparando variáveis
Clivagens$TolRac <- recode(Clivagens$P26, 1 <- 1, 0 <- 2, NA <- c(3,4))
Clivagens$TolMil <- recode(Clivagens$P27, 1 <- 1, 0 <- 2, NA <- c(3,4))
Clivagens$TolCom <- recode(Clivagens$P28, 1 <- 1, 0 <- 2, NA <- c(3,4))
Clivagens$TolArm <- recode(Clivagens$P29, 1 <- 1, 0 <- 2, NA <- c(3,4))
Clivagens$TolAbo <- recode(Clivagens$P30, 1 <- 1, 0 <- 2, NA <- c(3,4))

# Tipologia
Clivagens$Tipo <- ifelse(Clivagens$TolRac==1 & Clivagens$TolMil==1 
                         & Clivagens$TolArm==1 & Clivagens$TolAbo==1, "Tolerante incondicional",
                         ifelse((Clivagens$TolArm+Clivagens$TolAbo)==2 
                                & Clivagens$TolRac==0 & Clivagens$TolMil==0 , "Intolerante seletivo", "Intolerante"))


# ÍNDICE DE ATITUDES DEMOCRÁTICAS /////////////////////////////////////////////////////////////

#Dem1 - Separação dos poderes
Clivagens$Dem1 <- ifelse(Clivagens$P51 > 10, NA, Clivagens$P51)
Clivagens$Dem1 <- 10 - Clivagens$Dem1

#Dem2 - Voto como procedimento
Clivagens$Dem2 <- ifelse(Clivagens$P52 > 10, NA, Clivagens$P52)

#Dem3 - Participação
Clivagens$Dem3 <- ifelse(Clivagens$P53 > 10, NA, Clivagens$P53)

#Dem4 - Estado de Direito
Clivagens$Dem4 <- ifelse(Clivagens$P54 > 10, NA, Clivagens$P54)

#Dem5 - Direito das minorias
Clivagens$Dem5 <- ifelse(Clivagens$P55 > 10, NA, Clivagens$P55)
Clivagens$Dem5 <- 10 - Clivagens$Dem5

# Índice de atitudes democráticas
Clivagens <- Clivagens %>%
  mutate(Dem = Dem1 + Dem2 + Dem3 + Dem4 + Dem5)


# APOIO AO GOLPE/INTERVENÇÃO FEDERAL ////////////////////////////////////////////////////////////

Clivagens$P58[Clivagens$P58 %in% c(11, 12)] <- NA
Clivagens$Golpe <- Clivagens$P58


# REJEIÇÃO DE DIREITOS AOS PARTIDOS ////////////////////////////////////////////////////////////

# Definindo 11 e 12 como NA nas variáveis P22, P23, P24 e P25
Clivagens$P22[Clivagens$P22 %in% c(11, 12)] <- NA
Clivagens$P23[Clivagens$P23 %in% c(11, 12)] <- NA
Clivagens$P24[Clivagens$P24 %in% c(11, 12)] <- NA
Clivagens$P25[Clivagens$P25 %in% c(11, 12)] <- NA

# Criando a nova variável de somatório
Clivagens$Somatorio <- rowSums(Clivagens[, c("P22", "P23", "P24", "P25")], na.rm = TRUE)

# Padronizando a nova variável para a escala de 0 a 10
max_value <- max(Clivagens$Somatorio, na.rm = TRUE)
min_value <- min(Clivagens$Somatorio, na.rm = TRUE)
range_0_to_10 <- 10 - 0  # Intervalo desejado

Clivagens$Antpart <- 10 - (((Clivagens$Somatorio - min_value) / (max_value - min_value)) * range_0_to_10)


# VARIÁVEIS DE CONTROLE ///////////////////////////////////////////////////////////////////////

Clivagens$Sexo <- factor(Clivagens$P6, labels = c("Masculino", "Feminino"))
Clivagens$Raça <- factor(ifelse(Clivagens$P7 == 1, "Branco", "Não Branco"))
Clivagens$F.Etária <- factor(ifelse(Clivagens$P9 %in% c(1, 2), "16-24",
                                    ifelse(Clivagens$P9 == 3, "25-44",
                                           ifelse(Clivagens$P9 == 4, "45-59",
                                                  ifelse(Clivagens$P9 == 5, "60 ou +", NA)))), 
                             levels = c("16-24", "25-44", "45-59", "60 ou +"))
Clivagens$Educação <- factor(ifelse(Clivagens$P12 %in% c(1, 2, 3, 4, 5), "Sem formação superior",
                                    ifelse(Clivagens$P12 == 6, "Superior Completo", NA)), 
                             levels = c("Sem formação superior", "Superior Completo"))
Clivagens$Religião <- factor(ifelse(Clivagens$P13 == 1, "Católico",
                                    ifelse(Clivagens$P13 == 2, "Protestante",
                                           ifelse(Clivagens$P13 == 3, "Evangélico Pentecostal",
                                                  ifelse(Clivagens$P13 %in% c(4, 5, 6, 7, 8), "Outras",
                                                         ifelse(Clivagens$P13 == 9, "Nenhuma",
                                                                ifelse(Clivagens$P13 == 10, NA, NA)))))),
                             levels = c("Católico", "Protestante", "Evangélico Pentecostal", "Outras", "Nenhuma"))


# /////////////////////////////////////////////////////////////////////////////////////////////
# ANÁLISE DOS DADOS ///////////////////////////////////////////////////////////////////////////
# /////////////////////////////////////////////////////////////////////////////////////////////

# Comandos para a TABELA 1 ///////////////////////////////////////////////////////////////////

var_interesse <- Clivagens[, c("TolRac", "TolMil", "TolArm", "TolAbo")]
freq_percentual <- colMeans(var_interesse, na.rm = TRUE)
freq_percentual_df <- data.frame(Variavel = names(freq_percentual),
                                 Percentual_1 = freq_percentual)
nomes_y <- c("Racistas", "Militaristas", "Defensores do porte de armas", 
             "Defensores do direito ao aborto")
freq_percentual_df$Variavel <- factor(freq_percentual_df$Variavel, 
              levels = c("TolRac", "TolMil", "TolArm", "TolAbo"), labels = nomes_y)
freq_percentual_df$Percentual_1 <- freq_percentual_df$Percentual_1*100
freq_percentual_df$Variavel <- factor(freq_percentual_df$Variavel,
              levels = freq_percentual_df$Variavel[order(-freq_percentual_df$Percentual_1)])


# Comandos para a TABELA 2 ///////////////////////////////////////////////////////////////////

distribuicao <- prop.table(table(Clivagens$Tipo))
distribuicao_df <- data.frame(Tipo = names(distribuicao),
                               Percentual = distribuicao)
distribuicao_df$Percentual.Freq <- distribuicao_df$Percentual.Freq*100

# Comandos para a TABELA 3 //////////////////////////////////////////////////////////////////

ModDem <- lm(Dem ~ Tipo + Sexo + F.Etária + 
               Educação + Religião + Raça, data = Clivagens)
summary(ModDem)

# Comandos para o GRÁFICO 1 /////////////////////////////////////////////////////////////////

novos_dados <- data.frame(Tipo = c("Intolerante", "Intolerante seletivo", "Tolerante incondicional"),
                          Sexo = c("Masculino", "Masculino", "Masculino"),
                          F.Etária = c("25-44", "25-44", "25-44"),  
                          Educação = c("Superior Completo", "Superior Completo", "Superior Completo"),
                          Religião = c("Católico", "Católico","Católico"),  
                          Raça = c("Branco", "Branco", "Branco")) 

valores_preditos <- predict(ModDem, newdata = novos_dados, type = "response")
novos_dados$Prob_Dem <- valores_preditos
novos_dados$Prob_Dem
# O gráfico foi construido no Excel com base nos comandos acima do R

# Comandos para a TABELA 4 //////////////////////////////////////////////////////////////////

# Apoio ao golpe/intervenção

ModGolpe <- lm(Golpe ~ Tipo + Sexo + F.Etária + 
                 Educação + Religião + Raça, data = Clivagens)
summary(ModGolpe)

# Rejeição de direitos aos partidos

ModAntpart <- lm(Antpart ~ Tipo + Sexo + F.Etária + 
                   Educação + Religião + Raça, data = Clivagens)
summary(ModAntpart)

# Comandos para o ANEXO A /////////////////////////////////////////////////////////////////////

ModDem1 <- lm(Dem1 ~ Tipo + Sexo + F.Etária + 
                Educação + Religião + Raça, data = Clivagens)
summary(ModDem1)

ModDem2 <- lm(Dem2 ~ Tipo + Sexo + F.Etária + 
                Educação + Religião + Raça, data = Clivagens)
summary(ModDem2)

ModDem3 <- lm(Dem3 ~ Tipo + Sexo + F.Etária + 
                Educação + Religião + Raça, data = Clivagens)
summary(ModDem3)

ModDem4 <- lm(Dem4 ~ Tipo + Sexo + F.Etária + 
                Educação + Religião + Raça, data = Clivagens)
summary(ModDem4)

ModDem5 <- lm(Dem5 ~ Tipo + Sexo + F.Etária + 
                Educação + Religião + Raça, data = Clivagens)
summary(ModDem5)

# Comandos para o ANEXO B /////////////////////////////////////////////////////////////////////

# Teste separando os bancos considerando o experimento da P58#######

# Criando Clivagens1 com os casos de 1 a 750 (GOLPE)
Clivagens1 <- Clivagens[1:750, ]
# Criando Clivagens2 com os casos de 751 a 1500 (INTERVENÇÃO)
Clivagens2 <- Clivagens[751:1500, ]

ModGolpe1 <- lm(Golpe ~ Tipo + Sexo + F.Etária + 
                  Educação + Religião + Raça, data = Clivagens1)
summary(ModGolpe1)

ModGolpe2 <- lm(Golpe ~ Tipo + Sexo + F.Etária + 
                  Educação + Religião + Raça, data = Clivagens2)
summary(ModGolpe2)






